#ifndef VSqlGenId_H
#define VSqlGenId_H

#include "VSqlLog.h"
#include "VSqlDatabase.h"

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

class VSqlQuery : public QSqlQuery
{
public:
	explicit VSqlQuery(QSqlDatabase db) :QSqlQuery(db) {}

	bool prepare(const QString &query)
	{
		bool ret = QSqlQuery::prepare(query);

/*******
		if (!ret) {
			QMessageBox::information(0,QObject::tr("test"),QString(query));
		}
***********/

		return ret;
	}

	QString lastQuery() const { return QSqlQuery::lastQuery();}

	void bindValue(const QString &placeholder,const QVariant &val)
	{
		QSqlQuery::bindValue(placeholder,val);
	}

	bool exec(const QString &query);
	bool exec();

	bool next();

	QSqlRecord record() const
	{
		QSqlRecord ret = QSqlQuery::record();
		
		return ret;
	}
	
private:
	void replaceParams(QString &sql) const;
};

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

class VSqlGenId
{
public:
	VSqlGenId(const QSqlDatabase& db);

	QVariant exec();

private:
	VSqlQuery m_query;
};

///////////////////////////////////////////////////////////////////////////////

#endif
